var User=require('../models/user');
//引入加密的第三方模块
var Post=require('../models/post');
var crypto=require('crypto');

//权限的判断
//如果用户没有登录,就访问登录页面
function checklogin(req,res,next){
    if(!req.session.user){
        req.flash('error','未登录');
        res.redirect('/login');
    }
    next();
}
//如果用户登录了,则不能访问登录和注册页面
function checknotlogin(req,res,next){
    if(req.session.user){
        req.flash('error','已登录');
        res.redirect('/');
    }
    next();
}
module.exports=function(app){
    //所有的路由操作都会放在这里
    //首页
    app.get('/',function(req,res){
        //测试注册用户保存是否正确
       //var user=new User({name:'lsp',password:'123',email:'123456@qq.com'});
       // user.save(function(data){
       //     console.log(data);
       // })
        Post.get(null,function(err,posts){
            if(err){
                posts=[];
            }
            var title=function(){
            if(req.session.user){
               return req.session.user.name+'的博客';
                 }
                return '博客'
            }
            res.render('index',{
                title:title(),
                user:req.session.user,
                posts:posts,
                success:req.flash('success').toString(),
                error:req.flash('error').toString()
            })
        })

    })
    //注册页面
    app.get('/reg',checknotlogin);
    app.get('/reg',function(req,res){
        res.render('reg',{
            title:'新用户注册',
            user:req.session.user,
            success:req.flash('success').toString(),
            error:req.flash('error').toString()
        })
    })
    //注册行为
    app.post('/reg',checknotlogin);
    app.post('/reg',function(req,res){
       //收集数据
        //判断两次密码是否一致
        //对密码进行加密处理
        //最后将收集好的数据整理完毕
        //判断用户名是否存在
        //如果不存在,说明可以进行操作,那么就开始新增用户操作
        //新增后,将用户信息放入session中
        var name=req.body.name;
        var password=req.body.password;
        var password_re=req.body['password-repeat'];
        if(password!=password_re){
            req.flash('error','两次输入密码不一致');
              return res.redirect('/reg');
        }
        var md5=crypto.createHash('md5');
        var password=md5.update(req.body.password).digest('hex');
        var  newUser = new User({
            name:name,
            password:password,
            email:req.body.email
        });
        User.get(newUser.name,function(err,user){
            if(err){
                req.flash('error',err);
               return res.redirect('/reg');
            }
            if(user){
                req.flash('error','用户名已存在,不要重复注册');
                 return res.redirect('/reg');
            }
            newUser.save(function(err,user){
                if(err){
                    req.flash('error',err);
                    return res.redirect('/reg');
                }
                req.session.user=newUser;
                req.flash('success','注册成功,欢迎您成为新用户!');
                 return res.redirect('/');
            })
        })
    })
    //登录页面
    app.get('/login',checknotlogin);
    app.get('/login',function(req,res){
        res.render('login',{
            title:'Welcome to blog !',
            user:req.session.user,
            success:req.flash('success').toString(),
            error:req.flash('error').toString()
        })
    });
    app.post('/login',checknotlogin);
    app.post('/login',function(req,res){
        //首先生成密码的md5值
        //判断下也用户是否存在
        //判断下密码是否正确
        //将登陆的用户信息接入session,然后跳转即可
        var md5=crypto.createHash('md5');
        var password=md5.update(req.body.password).digest('hex');
        User.get(req.body.name,function(err,user){
            if(err) {
                req.flash('error', err);
                 return res.redirect('/login');
            }
            if(!user){
                //用户不存在
                req.flash('error','用户不存在');
                return res.redirect('/login');
            }
            if(user.password !=password){
                req.flash('error','密码错误');
                return res.redirect('/login');
            }
            req.session.user=user;
            req.flash('success','登陆成功 Welcome to here !');
             return res.redirect('/')
        })
    })
    //退出
    app.get('/logout',checklogin);
    app.get('/logout',function(req,res){
        req.session.user=null;//千万不能删除session,删的是里边的user
        req.flash('success','退出成功');
        return res.redirect('/');
    })
    //发表
    app.get('/post',checklogin);
    app.get('/post',function(req,res){
        res.render('post',{
            title:'我要发表的内容',
            user:req.session.user,
            success:req.flash('success').toString(),
            error:req.flash('error').toString()
        })
    });
    app.post('/post',checklogin);
    app.post('/post',function(req,res){
        var currentUser=req.session.user.name;
        var post=new Post(currentUser,req.body.title,req.body.post,req.ip);
        post.save(function(err){
            if(err){
                req.flash('error',err);
                return res.redirect('/');
            }
            req.flash('success','发表成功');
            res.redirect('/');
        })
    })
}